/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    void deleteNode(ListNode* node) {
        
        // 这道题有点脑筋急转弯的意思
        // 题目只给了我们一个要删除的节点，且该节点不是最后一个节点
        // 那我们就可以拿后一个节点的值覆盖当前这个要删除的节点的值，然后再释放下一个节点
        ListNode *next = node->next;
        
        node->val = next->val;      // 覆盖
        node->next = next->next;    // 让当前节点的next指向next的next
        delete next;                // 删除下一个节点
    }
};